1. Field of the Invention
The invention relates generally to methods and apparatus for receiving, especially tracking of, direct-sequence spread spectrum (DSSS) signals such as GPS signals.
2. Description of Related Art
The Global Positioning System (GPS) is a global navigation satellite system (GNSS) that provides geo-spatial positioning with global coverage. GPS generally employs at least 24 satellites in six 20,200 km circular orbits. Four satellites operate in each plane. The orbits are arranged so that at least six satellites are always within line of sight from almost everywhere on Earth's surface.
GPS receivers use triangulation of the GPS satellites navigational signals to determine their location. The satellites provide at least two different signals that enable location determination with differing accuracies. Coarse-acquisition (C/A) code is intended for civilian use, and is deliberately degraded from the maximum accuracy known to be possible. By contrast, a precision (P) code is available primarily for governmental or military use. The P code may be encrypted by a “Y” code to produce a “P(Y)” code. Positional accuracy can be greatly improved with the use of augmentation system such as the Wide Area Augmentation System (WAAS) available in North America.
Each GPS satellite broadcasts a navigational message at 50 bits per second. The navigational messages are sent in 30-second frames. Each frame includes GPS time information, orbital information (i.e., “ephemeris data”), and an “almanac.” The almanac contains coarse orbit and status information for every satellite, an ionospheric model, and information relating GPS time to coordinate universal time (UTC).
The navigational messages are transmitted using the C/A or P(Y) spread spectrum codes. FIG. 1 provides an overview of how the broadcast signal is generated on a satellite using direct-sequence spread spectrum (DSSS) modulation techniques. The example of C/A code is used. Initially the navigational signal 110 is multiplied by the C/A code 120. C/A code is a 1,023 “chip” pseudonoise code (i.e., spread spectrum code, spreading code) that is repeated every millisecond. The word “chip” is substituted for the usual parlance, “bit,” to distinguish the pseudonoise code unit from information bits in the navigational signal 110. The “de-spread length” is the number of samples per repetition of a spreading code. The terms “chip rate” and “chips per second” may be similarly substituted when referring to a pseudonoise code (such as the C/A code). (With a certain interpretation of the numeric values of the symbols, the multiplication in the real domain may be equivalently performed by a modulo-two adder 140 in the binary domain, as shown in Table 1. The binary values 0 and 1 are mapped to real values 1 and −1, respectively. When the conditions are satisfied that a modulo-two addition of binary values is equivalent to a multiplication of corresponding real values, those terms are used interchangeably.)
TABLE 1Multiplication A × B = CABC1111−1 −1 −11−1−1−11Mod 2 Addermod2(A + B) = CABC000011101110
The resultant signal (on line 142) is a spread navigation message which is then modulated onto a carrier wave 130 by modulator 150. The global positioning system uses the L1 carrier frequency of 1,575.42 MHz or L2 carrier frequency of 1,227.6 MHz to modulate the spread navigation signal. The modulated signal 160 is broadcast by the satellite. Although each satellite broadcasts on the same carrier, the spread spectrum codes (e.g., C/A codes) are unique to each satellite. The specific spreading codes are chosen to have sufficiently small cross-correlation. By using distinct C/A codes, a receiver can distinguish each of the individual satellite's signals, despite use of the shared frequency band.
By the time the broadcast modulated signal reaches a GPS receiver, it may be significantly distorted. The relative velocity of the GPS receiver and a satellite may introduce large Doppler shifts. Transmission through the ionosphere may also introduce significant signal distortions.
FIG. 2 provides a block diagram of the architecture for a conventional GPS receiver 200. The GPS receiver 200 processes a signal in three phases: a radio frequency (RF) phase, 210, a digital processing phase 220, and an applications phase 230.
In the RF phase 210, the distorted broadcast signal from each of the satellites in view is received at antenna 211. The analog signal 241 (i.e., the received and applied signal is fed into an RF front end 212 which down converts the broadcast signal from the L1 or L2 carrier to an intermediate frequency (IF) carrier. The IF center frequency typically ranges from 2 MHz to more than 10 MHz depending on the RF front end design. Analog-to-digital converter (ADC) 213 digitizes the IF signal at a sampling rate, typically between 4 and 40 million samples per second (Ms/sec., where 1 Ms/sec.=1×106 samples/sec.). ADC 213 may quantize the samples to any number of bits, for example, 2 bits.
The digitized IF signal 242 output from the ADC 213 is initially processed. Often, this processing is performed by an application-specific integrated circuit (ASIC) 221 though other forms of processors may be employed, as well. The ASIC 221 implements a digital mixer and multi-channel de-spreader 222 to identify the navigation messages from each satellite. Initially the mixer removes the IF carrier and Doppler shift together using feedback provided from down stream components (i.e., tracking processors 223) and the IF signal becomes a baseband signal. Because each satellite's C/A code is known a priori, the navigational message for the satellite can be restored by de-spreading the baseband signal using a locally generated copy of the C/A code. The sampling rate of C/A must be adjusted dynamically due to the Doppler time effect on received signals. The multi-channel de-spreader 222 may process several channels simultaneously (e.g., up to 12). Each channel de-spreads the signal using a C/A code corresponding to a unique satellite.
The de-spread signals 243 from each channel are provided to corresponding tracking processors 223. De-spreading reduces the data rate down to about 50 to 1000 samples per second (s/sec.) per channel, and thus tracking processors 223 are typically implemented in software by a digital signal processor (DSP) or central processing unit (CPU) 225. The tracking processors 223 provide feedback at a similar bit rate (signal 244) to the digital mixer and multi-channel de-spreader 222. This feedback is used to remove the IF carrier and Doppler frequency as well as to synchronize the generation of the C/A code with the received signal against local clock error and Doppler shift in time.
The tracking processors 223 also output pseudo-ranges and delta pseudo ranges (signal 245) to a navigation program 224 at a rate of about 1 to 10 samples per second per channel. The navigation program 224 then estimates the receiver location from the ranges provided by each channel and the satellite location information received from each satellite.
In the application phase 230, the estimated location information may be sent (signal 246) to an application program or device 232 for additional processing and presentation. For example, application may display the estimated receiver location in the context of a map, or that location may be used to calculate a result (e.g., estimated time of arrival) or route to a destination.
FIG. 3 provides a detailed block diagram of the operation of the GPS receiver 200 in the digital processing phase 220 for an exemplary channel (there being one channel per satellite transmission being processed). Continuing the above example, processing above and below dashed line 330 may be performed in ASIC 221 and DSP 225, respectively.
Initially, the digitized IF signal 242 is delivered to channels 1 to N on paths 301-1 to 301-N, respectively. For each channel, ASIC 221 implements a mixer 310 for carrier and Doppler removal. Accurate removal of these components is made possible by a feedback signal 306 generated from processing down-stream.
With the carrier and Doppler frequencies removed, the navigational signal is retrieved by de-spreaders 311, 312, and 313. C/A code generator 314 provides the appropriate C/A code (respectively, code 303-1, 303-2 and 303-3) to the early, prompt, and late de-spreaders 311, 312, and 313, respectively. The C/A code 303-2 is time aligned with the incoming signal in the prompt de-spreader 312, while the C/A code 303-1 delivered to the early de-spreader 311 and the C/A code 303-3 delivered to the late de-spreader 313 are time-shifted ahead and behind code 303-2, respectively. The time alignment against clock mismatch and Doppler shift is controlled by the code numerically controlled oscillator (code NCO) 316. The C/A codes generated by the C/A code generator 314 are provided to the de-spreaders at the sample rate as high as that of the IF signal which may be significantly higher than the C/A code bit rate of 1.023 Mbps. The C/A code generator 314 must generate the C/A code “on the fly” to match the varying C/A chip duration due to clock error and Doppler shift in time. Generating C/A code on the fly is controlled by the code NCO 316.
The outputs of the de-spreaders are passed to the code tracking processor 321 and, in the case of the output of prompt de-spreader 312 also to the carrier tracking processor 322, implemented in the DSP 225.
The code tracking processor 321 uses a delay-locked loop (DLL) algorithm to measure the time mismatching between broadcast from the GPS satellite and reception by the GPS receiver, and feed the measurement back to the code NCO 316.
The carrier tracking processor 322 uses a phase-locked loop/frequency-locked loop (PLL/FLL) algorithm to measure the frequency mismatching of the satellite signal. The measured frequency shift is fed back to the carrier NCO 315 at 305. The carrier NCO 315 provides a feedback signal 306 to mixer 310 for both carrier and Doppler removal.
The code tracking processor 321 and carrier tracking processor 322 output pseudo-ranges and delta pseudo-ranges to the navigation program 224. Delta pseudo-range is the change in pseudo-range over a specified time interval and is equal to the time rate of change of actual range adjusted for clock errors. It is equivalent to the measured Doppler shift in the carrier frequency of the received signal. This information in combination with the output signals 340 from the remaining channels are used to calculate the GPS receiver position.
Conventional GPS systems have been implemented either fully in ASIC hardware or in ASIC accelerators combined with DSP/CPU processors. Hardware accelerators have been essential to meeting the high computational requirements of known GPS decoding techniques. However, development costs associated with ASICs are considerably greater than for software and ASIC solutions lack the flexibility to adjust themselves to meet changing performance requirements. Moreover, new GNSS such as Galileo and newly added GPS signals require a re-design of ASIC chips. Thus, a need exists for a full software GPS solution and consequently a GPS decoding technique with lower computational requirements.